package com.lottery.material.utils;

import java.util.Random;

/**
 * Description：主键生成器
 * Created by 朱正磊 on 2019-03-18 14:50
 */
@SuppressWarnings("ALL")
public class KeyUtil {

    /**
     * description：方案一：返回唯一key（19位）
     * user 朱正磊
     * time 2019-3-18 14:51
     */
    public static synchronized String genUniqueKey() {
        // 1、获取当前时间的毫秒值（比如：1554860962244）
        long millis = System.currentTimeMillis();
        // 2、生成六位随机数（比如：911177）
        Integer number = new Random().nextInt(900000) + 100000;
        // 3、返回毫秒值 + 六位随机数（比如：1554860962244911177）
        return millis + String.valueOf(number);
    }

    /**
     * description：方案二：返回唯一ID（16位）
     * user 朱正磊
     * time 2019-04-10 09:34
     */
    public static synchronized String generatorID() {
        // 1、获取当前时间的毫秒值（比如：1544944665139）
        long millis = System.currentTimeMillis();
        // 2、生成三位随机数，如果不足三位前面补0（比如：092）
        String random = String.format("%03d", new Random().nextInt(999));
        // 3、返回毫秒值 + 三位随机数（比如：1544944665139092）
        return millis + random;
    }

    /**
     * description：方案三：返回唯一ID（21位）
     * user 朱正磊
     * time 2019-04-10 09:35
     */
    public static synchronized String createID() {
        // 1、获取当前时间的毫秒值（比如：1544946138587）
        long millis = System.currentTimeMillis();
        // 2、生成九位随机数（比如：126560585）
        long random = (long) ((Math.random() + 1) * 100000000);
        // 3、返回毫秒值 + 八位随机数（比如：154494613858726560585）
        return millis + String.valueOf(random).substring(1);
    }

    public static void main(String[] args) {
        System.out.println(genUniqueKey());
        System.out.println(generatorID());
        System.out.println(createID());
    }

}
